#pragma once

#include "fxcc/core/graph/common/Type.h"

namespace fxcc
{
	namespace graph
	{
		namespace common
		{

			struct FXCC_API     VertexFixed
			{

				glm::vec3 pos;
				glm::vec3 normal;
				glm::vec2 tex;
				glm::vec3 tangent;
				glm::vec3 bigTangent;


				static VertexType Type()
				{
					return VertexType::_vertex_fixed_;
				}
			};

			struct FXCC_API     VertexSkinned
			{
				glm::vec3 pos;
				glm::vec3 normal;
				glm::vec2 tex;
				glm::vec3 tangent;
				glm::vec3 bigTangent;
				glm::ivec4 bones1;
				glm::vec4 weights1;
				glm::ivec4 bones2;
				glm::vec4 weights2;

				void Load(const VertexFixed& source)
				{
					pos = source.pos;
					tex = source.tex;
					normal = source.normal;
					tangent = source.tangent;
					bigTangent = source.bigTangent;
				}
	
				static VertexType Type()
				{
					return VertexType::_vertex_skinned_;
				}
			};
		}
	}
}